/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ept.controller;

import com.ept.controller.util.JsfUtil;
import com.ept.entities.Commandeclient;
import com.ept.entities.Produit;
import com.ept.facade.CommandeclientFacade;
import com.ept.facade.ProduitFacade;

import java.io.Serializable;

import java.util.Calendar;

import java.util.List;
import javax.ejb.EJB;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;


/**
 *
 * @author Khalil
 */
@ManagedBean(name = "commandeClient_Controller")
@SessionScoped
public class CommandeClient_Controller implements Serializable, ActionListener {

//    @ManagedProperty("#{loginController}")
//	private LoginController loginController;
    @EJB
    private ProduitFacade produitFacade;
    
    public ProduitFacade getProduitFacade() {
        return produitFacade;
    }
    
    public void setProduitFacade(ProduitFacade produitFacade) {
        this.produitFacade = produitFacade;
    }
    private Integer quantite;
    private Produit produit;
    private Commandeclient commandeclient1;
    List<Commandeclient> list;
    
   
    
    @EJB
    private com.ept.facade.CommandeclientFacade commandeclientFacade;
    
    public CommandeclientFacade getCommandeclientFacade() {
        return commandeclientFacade;
    }
    
    public void setCommandeclientFacade(CommandeclientFacade commandeclientFacade) {
        this.commandeclientFacade = commandeclientFacade;
    }
    private Commandeclient commandeclient;
    private Produit SelectedProduit;
    
    public Integer getQuantite() {
        return quantite;
    }
    
    public void setQuantite(Integer quantite) {
        this.quantite = quantite;
    }
    
    public Produit getSelectedProduit() {
        return SelectedProduit;
    }
    
    public void setSelectedProduit(Produit SelectedProduit) {
        this.SelectedProduit = SelectedProduit;
    }
    
    public Commandeclient getCommandeclient() {
        return commandeclient;
    }
    
    public void setCommandeclient(Commandeclient commandeclient) {
        this.commandeclient = commandeclient;
    }

    /**
     * Creates a new instance of CommandeClient_Controller
     */
   
     public String deconnecter() {
        LoginController loginController = (LoginController) FacesAccessor.getManagedBean("loginController");        
        
        list = commandeclientFacade.findByIdPanier(loginController.getUtilisateur().getPanier());        
        
        for (Commandeclient current : list) {
            current.setValidation("historique");
            commandeclientFacade.edit(current);
        }
        
        //loginController.setUtilisateur(null);
        //LoginControllerFacade.edit(current);
  return "index.xhtml?faces-redirect=true" ;        
    }
    
   public String Restaurer() {
        
        
        commandeclient1.setValidation("valider");
        commandeclientFacade.edit(commandeclient1);
         return "historique.xhtml?faces-redirect=true" ;       
    }  
     
     
    public String Valider() {
        
         commandeclient.setDate(Calendar.getInstance().getTime());
        commandeclient1.setValidation("achat");
        commandeclientFacade.edit(commandeclient1);
        
         return "Mon_Panier.xhtml?faces-redirect=true";
    }
    
    public String SupprimerPanier () {
     commandeclientFacade.remove(commandeclient1);
     return "Mon_Panier.xhtml?faces-redirect=true";
    }
    
    public String SupprimerHistorique () {
     commandeclientFacade.remove(commandeclient1);
        return "historique.xhtml?faces-redirect=true" ;       
    }
    
    public CommandeClient_Controller() {
        commandeclient = new Commandeclient();
        produit = new Produit();
        System.out.println("coool man");
        
    }
    
    public void Validation(Commandeclient commandeclient2) {        
        
        
        commandeclient1 = commandeclient2;
    }    
    
    public void AjouterCommande() {
        System.out.println("hello");
        LoginController loginController = (LoginController) FacesAccessor.getManagedBean("loginController");
        //System.out.println(SelectedProduit.getNomProduit());
        // System.out.println(SelectedProduit);
        SelectedProduit.setQuantiteDisponible(SelectedProduit.getQuantiteDisponible() - quantite);
        produitFacade.edit(SelectedProduit);
        //System.out.println(produit1.getNomProduit());
        //System.out.println(loginController.getUtilisateur());
        try {
            //Calendar cal = new GregorianCalendar();
            //int month = cal.get(Calendar.MONTH);
            //int year = cal.get(Calendar.YEAR);
            //int day = cal.get(Calendar.DAY_OF_MONTH);
            commandeclient.setDate(Calendar.getInstance().getTime());
            commandeclient.setIdProduit(SelectedProduit);
            commandeclient.setQuantite(quantite);
            commandeclient.setIdPanier(loginController.getUtilisateur().getPanier());
            commandeclient.setValidation("valider");
            commandeclient.setPrix(SelectedProduit.getPrixVente());
            System.out.println(commandeclient);
            commandeclientFacade.create(commandeclient);
            commandeclient = new Commandeclient();
            System.out.println("bravo");
            JsfUtil.addSuccessMessage("bravo");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("echec");
            JsfUtil.addErrorMessage("error");
        }
    }
    
    public Produit getProduit() {
        return produit;
    }
    
    public void setProduit(Produit produit) {
        this.produit = produit;
    }
    
    @Override
    public void processAction(ActionEvent event) throws AbortProcessingException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
